package com.yangjie.common.dao;

import java.io.Serializable;
import java.util.List;

import com.yangjie.common.dao.criteria.PaginationQueryCriteria;
import com.yangjie.common.dao.criteria.QueryCriteria;

public interface Dao<T extends Object> {
	void create(T t);

	T get(Serializable id);

	// T load(Serializable id);

	List<T> getAll();

	void update(T t);

	void delete(T t);

	void deleteById(Serializable id);

	void deleteAll();

	long count();

	long count(QueryCriteria criteria);

	long count(PaginationQueryCriteria criteria);

	boolean exists(Serializable id);

	public List<T> find(QueryCriteria criteria);
	
	public List<T> find(PaginationQueryCriteria criteria);
}